In order to look for errors in software programs (an activity referred to as “debugging”), some software development tools provide the ability to record the sequence of operations that a processor performed while executing a program. This is referred to as tracing the execution of the program, and the information that is captured is referred to as trace data The trace data may comprise data such as the sequence of operational codes (opcodes) executed by the processor, values of various processor registers at each executed opcode, and information in log files written by the traced program.
Some systems utilize multiple processor cores acting in concert to achieve their operational objectives. For example, a target system may comprise a digital signal processor core and an ARM core, where the two cores work together to perform various tasks. Having the multiple cores work together leads to situations where one processor core stalls waiting on the second processor core to complete prerequisite task (e.g., providing a piece of information or releasing a shared memory area). However, when debugging the software program it is difficult to correlate the code executed as between the processor cores to determine the activity of the second processor core that caused the stall of the first processor core.